// var Random = Mock.Random

// Random.id()   //随机返回id
// Random.integer(20,100)   //随机返回20到100的数字
// Random.float(60, 100, 3, 5) //随机返回60到100的带有3到5位小数的数字
// Random.string() //随机返回一个字符串
// Random.string(5) //随机返回一个长度为5的字符串
// Random.string(7, 10)//随机返回一个长度为5到7位的字符串
// Random.now()//随机现在时间
// Random.date()//随机返回一个日期
// Random.date('yyyy-MM-dd')//随机返回一个格式化日期
// Random.image()//随机返回一张图片
// Random.image('200x100')//随机返回一张带尺寸的图片
// Random.image('200x100', '#FF6600')//随机返回一张带尺寸和颜色的图片
// Random.paragraph()//随机返回一段文字
// Random.cparagraph()//随机返回一段中文文字
// Random.cparagraph(1, 3)//随机返回1到3段中文文字
// Random.csentence()//随机返回一句中文
// Random.ctitle()//随机返回一个中文标题

/**
 * @param {string} url
 * @returns {Object}
 */
 function paramToObj(url) {
    const search = decodeURIComponent(url.split('?')[1]).replace(/\+/g, ' ')
    if (!search) {
      return {}
    }
    const obj = {}
    const searchArr = search.split('&')
    searchArr.forEach(v => {
      const index = v.indexOf('=')
      if (index !== -1) {
        const name = v.substring(0, index)
        const val = v.substring(index + 1, v.length)
        obj[name] = val
      }
    })
    return obj
  }

  function bodyToObj(str) {
    if (!str) {
      return {}
    }
    const obj = {}
    const searchArr = str.split('&')
    searchArr.forEach(v => {
      const index = v.indexOf('=')
      if (index !== -1) {
        const name = v.substring(0, index)
        const val = v.substring(index + 1, v.length)
        obj[name] = val
      }
    })
    return obj
  }
  
  /**
   * This is just a simple version of deep copy
   * Has a lot of edge cases bug
   * If you want to use a perfect deep copy, use lodash's _.cloneDeep
   * @param {Object} source
   * @returns {Object}
   */
  function deepClone(source) {
    if (!source && typeof source !== 'object') {
      throw new Error('error arguments', 'deepClone')
    }
    const targetObj = source.constructor === Array ? [] : {}
    Object.keys(source).forEach(keys => {
      if (source[keys] && typeof source[keys] === 'object') {
        targetObj[keys] = deepClone(source[keys])
      } else {
        targetObj[keys] = source[keys]
      }
    })
    return targetObj
  }
  
  module.exports = {
    paramToObj,
    bodyToObj,
    deepClone
  }